jQuery(function($) {

    filtrarproducto();
    opcionTipoComprobante($);
    buscarProveedor($);
    cargarFamilias($);

    //abrir tablas maestras
    abrirTM($);

    //para detalle de producto
    $(".filaprod").on('click', function() {
        var idprod = $(this).attr('data-id') === undefined ? "" : $(this).attr('data-id');
        precios(idprod);
        stock(idprod, 0);
    });

    //opciones de producto    
    ventana("vtnfrmproducto", 660, 340, false, "center");
    ventana("vtnstkpreproducto", 560, 540, false, "center");
    ventana("detalleCompra", 600, 340, false, "center");

    $('#nuevoproducto,.editarproducto').on('click', function() {
        $('#vtnfrmproducto').dialog('option', 'title', 'Formulario de Producto');
        var id = $(this).attr('data-id') === undefined ? 0 : $(this).attr('data-id');
        abrir("vtnfrmproducto", "frmproductos/" + id);
        $('#vtnstkpreproducto').dialog("close");
        $('#vtnfrmproducto').dialog("open");
    });
    $('.stock_precios').on('click', function() {
        $('#vtnstkpreproducto').dialog('option', 'title', 'Stock - Precio de Producto');
        var id = $(this).attr('data-id') === undefined ? "" : $(this).attr('data-id');
        abrir("vtnstkpreproducto", "frmopcionesproducto/" + id);
        $('#vtnfrmproducto').dialog("close");
        $('#vtnstkpreproducto').dialog("open");
    });

    $(".detCompra").on('click', function() {
        var id = $(this).attr('data-id') === undefined ? "" : $(this).attr('data-id');
        detalleCompra(id);
        $('#detalleCompra').dialog("open");
    });

    $("#guardarCompra").on("click", function() {
        guardarCompra();
    });

    $("#formdetcompra").submit(function(e) {
        e.preventDefault();
        var actionurl = e.currentTarget.action;
        agregarDetalleCompra(actionurl, $);
    });

//agregar - modificar TM

    $("#formlinea").submit(function(e) {
        e.preventDefault();
        var actionurl = e.currentTarget.action;
        guardarModificarTM(actionurl, 'linea', $("#id_linea").val(), $("#desc_linea").val(), 0, $);
    });

    $("#formfamilia").submit(function(e) {
        e.preventDefault();
        var actionurl = e.currentTarget.action;
        guardarModificarTM(actionurl, 'familia', $("#id_fam").val(), $("#desc_fam").val(), $("#cbolineas").val(), $);
    });

    $("#formmarca").submit(function(e) {
        e.preventDefault();
        var actionurl = e.currentTarget.action;
        guardarModificarTM(actionurl, 'marca', $("#id_marca").val(), $("#desc_marca").val(), 0, $);
    });

});

function abrirTM($) {
    $("#abrirlinea").on("click", function() {
        abrir("lineas", "1");
    });
    $("#abrirfamilia").on("click", function() {
        abrir("familias", "2");
    });
    $("#abrirmarca").on("click", function() {
        abrir("marcas", "3");
    });
    $("#abrirsucursal").on("click", function() {
        abrir("sucursales", "4");
    });

}

function detalleCompra(compra) {
    jQuery.ajax({
        type: "GET",
        url: "detcompra/" + compra,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tabla = "";
            var tam = data.length;
            for (var i = 0; i < tam; i++) {
                tabla += "<tr><td>" + data[i].comprobantecompra_id +
                        "</td><td>" + data[i].producto.desc_prod +
                        "</td><td class='align_center'>" + data[i].cantidad +
                        "</td><td class='align_center'>" + data[i].precio +
                        "</td><td class='align_center'>" + data[i].importe + "</td></tr>";
            }
            jQuery("#datosDetallCompra tbody").html(tabla);
        },
        error: function(data) {

        }
    });

}

function precios(idprod) {
    jQuery.ajax({
        type: "GET",
        url: "precios/" + idprod,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tabla = "";
            var tam = data.length;
            for (var i = 0; i < tam; i++) {
                tabla += "<tr><td>" + data[i].tipoprecio.desc_tipo + "</td><td>" + data[i].cantidad + "</td><td>" + data[i].precio + "</td></tr>";
            }
            jQuery("#tblprecios tbody").html(tabla);
        },
        error: function(data) {

        }
    });
}

function stock(idprod) {
    jQuery.ajax({
        type: "GET",
        url: "stock/" + idprod,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tabla = "";
            var tam = data.length;
            for (var i = 0; i < tam; i++) {
                tabla += "<tr><td>" + data[i].sucursal.ciudad_suc + "</td><td>" + data[i].stock + "</td></tr>";
            }
            jQuery("#tblstock tbody").html(tabla);
        },
        error: function(data) {

        }
    });
}


function buscarTM(tipo, id) {
    jQuery.ajax({
        type: "GET",
        url: base_url + "buscartablamaestra/" + tipo + "/" + id,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            if (parseInt(tipo) === 1) {
                jQuery("#id_linea").val(data.id_linea);
                jQuery("#desc_linea").val(data.desc_linea);
            }
            if (parseInt(tipo) === 2) {
                jQuery("#id_fam").val(data.id_fam);
                jQuery("#desc_fam").val(data.desc_fam);
                jQuery("#cbolineas option[value=" + data.linea.id_linea + "]").attr("selected", true);
            }
            if (parseInt(tipo) === 3) {
                jQuery("#id_marca").val(data.id_marca);
                jQuery("#desc_marca").val(data.desc_marca);
            }
            if (parseInt(tipo) === 4) {
                jQuery("#id_suc").val(data.id_suc);
                jQuery("#ciudad_suc").val(data.ciudad_suc);
                jQuery("#dir_suc").val(data.dir_suc);
            }
        }
    });
}

function filtrarproducto() {
    jQuery('#filtrarproductos').select2(
            {
                placeholder: 'Ingrese producto',
                minimumInputLength: 3,
                allowClear: true,
                ajax: {
                    quietMillis: 150,
                    url: base_url + 'filtradodeProd',
                    dataType: 'json',
                    data: function(term, page) {
                        return {
                            apikey: "ju6z9mjyaj62d8uekgbvv26t",
                            q: term
                        };
                    },
                    results: function(data, page) {
                        var myResults = [];
                        var tam = data.length;
                        for (var i = 0; i < tam; i++) {
                            myResults.push({
                                id: data[i].id_prod,
                                text: (data[i].desc_prod + " " + data[i].model_prod + " " + data[i].marca.desc_marca).toString()
                            });
                        }
                        return {results: myResults};
                    }
                }
            }
    );
}

function agregarDetalleCompra(url, $) {
    var total = 0;
    var id_prod = $("#filtrarproductos").select2("val");
    var desc_prod = ($("#filtrarproductos").select2("data")).text;
    var cantidad = $("#cantidad").val();
    var precio = $("#precio").val();
    var importe = cantidad * precio;

    total = parseFloat($("#total").val()) + importe;

    $("#subTotal").val((total / 1.18).toFixed(2));
    $("#igv").val(((total / 1.18) * 0.18).toFixed(2));
    $("#total").val(total);
    $.ajax({
        type: "POST",
        url: url,
        data: {idprod: id_prod, descprod: desc_prod, cantidad: cantidad,
            precio: precio, importe: importe
        },
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tabla = "";
            var tam = data.length;
            for (var i = 0; i < tam; i++) {
                tabla += "<tr>" +
                        "<td>" + data[i].producto.desc_prod + "</td>" +
                        "<td>" + data[i].cantidad + "</td>" +
                        "<td>" + data[i].precio + "</td>" +
                        "<td>" + data[i].importe + "</td>" +
                        "<td><div class='btn-group'>" +
                        "<a class='red btn removerprod' href='javascript:;' onclick='removerProducto(" + data[i].producto.id_prod + ")'>" +
                        "<i class='icon-remove'></i></a>" +
                        "</div></td>" +
                        "</tr>";
            }
            $("#tbldetcompra tbody").html(tabla);
            $("#filtrarproductos").select2("val", "");
            $("#cantidad").val(0);
            $("#precio").val(0.00);
        }
    });
}

function guardarCompra() {
    jQuery.ajax({
        type: "POST",
        url: base_url + 'guardarCompra',
        data: {codProv: jQuery("#codProveedor").val(), serie: jQuery("#serie").val(),
            numero: jQuery("#numero").val(), fecha: jQuery("#fecCompra").val(), subTotal: jQuery("#subTotal").val(),
            moneda: jQuery("#moneda").val(), igv: jQuery("#igv").val(), total: jQuery("#total").val(),
            tipoComp: jQuery("#cboTipoComp").val()
        }, //usarlo cuando se envía mediante POST
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
                mostrarMensaje('mensaje',data);
        },
        error: function() {
            mostrarMensaje('mensaje',data);
        }
    });
}


function opcionTipoComprobante($) {
    $("#cboTipoComp").on("change", function() {
        var id = $("#cboTipoComp").val();
        if (id === '4') {
            $("#ruc").css("display", "none");
            $("#dni").css("display", "inline");
            $("#ruc").val("");
            $("#frmRuc").val("");
        } else {
            $("#ruc").css("display", "inline");
            $("#dni").css("display", "none");
            $("#dni").val("");
            $("#frmDNI").val("");
        }
    });
}

function buscarProveedor($) {
    $('#dni,#ruc').bind("enterKey", function(e) {
        $.ajax({
            type: "POST",
            url: base_url + "buscarProveedor",
            data: {ruc: $("#ruc").val(), dni: $("#dni").val()},
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            dataType: "json",
            success: function(data) {
                $("#codProveedor").val(data.id_prov);
                $("#proveedor").val(data.nom_prov);
            }
        });
    });
    $('#dni,#ruc').keyup(function(e) {
        if (e.keyCode === 13)
        {
            $(this).trigger("enterKey");
        }
    });
}

function cargarFamilias($) {
    $("#lineas").change(function() {
        $("#familias option").remove();
        var linea = $("#lineas").val();
        combo('familias/' + linea, 'familias', $);
    });
}

function combo(url, id, $) {
    $.ajax({
        type: "GET",
        url: base_url + url,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tam = data.length;
            var option = "<option value='0'>----Seleccione----</option>";
            $("#" + id).append(option);
            for (var i = 0; i < tam; i++) {
                var option = $(document.createElement('option'));
                option.text(data[i].desc_fam);
                option.val(data[i].id_fam);
                $("#" + id).append(option);
            }
        }
    });
}


function guardarModificarTM(url, tipo, cod, desc, param, $) {
    var valor = 0;
    $.ajax({
        type: "POST",
        url: url,
        data: {tipo: tipo, cod: cod,
            desc: desc, param: param
        },
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            if (data === 1) {
                if (tipo === 'linea') {
                    abrir("lineas", "1");
                }
                if (tipo === 'familia') {
                    abrir("familias", "2");
                }
                if (tipo === 'marca') {
                    abrir("marcas", "3");
                }
            }
        }
    });
    return valor;
}

function removerProducto(id) {
    jQuery.ajax({
        type: "GET",
        url: base_url + 'removerproductodetalle/' + id,
        contentType: "application/x-www-form-urlencoded; charset=utf-8",
        dataType: "json",
        success: function(data) {
            var tabla = "";
            var tam = data.length;
            for (var i = 0; i < tam; i++) {
                tabla += "<tr>" +
                        "<td>" + data[i].producto.desc_prod + "</td>" +
                        "<td>" + data[i].cantidad + "</td>" +
                        "<td>" + data[i].precio + "</td>" +
                        "<td>" + data[i].importe + "</td>" +
                        "<td><div class='btn-group'>" +
                        "<a class='red btn removerprod' href='javascript:;' onclick='removerProducto(" + data[i].producto.id_prod + ")'>" +
                        "<i class='icon-remove'></i></a>" +
                        "</div></td>" +
                        "</tr>";
            }
            jQuery("#tbldetcompra tbody").html(tabla);
        }
    });
}

